set (fm_emodel
    fluidmodel.cpp
    cbs.cpp
    supg.cpp
    stokesflow.cpp
    stokesflowvelocityhomogenization.cpp
    )

set (fm_element
    fmelement.cpp
    supgelement.cpp
    supgelement2.cpp
    cbselement.cpp
    tr1_2d_cbs.cpp
    tr1_2d_supg.cpp
    tr1_2d_supg2.cpp
    tr1_2d_supg_axi.cpp
    tr1_2d_supg2_axi.cpp
    tet1_3d_supg.cpp
    tr21_2d_supg.cpp
    quad10_2d_supg.cpp
    tr21stokes.cpp
    tet21stokes.cpp
    hexa21stokes.cpp
    tr1bubblestokes.cpp
    tet1bubblestokes.cpp
    line2boundaryelement.cpp
    fluidmaterialevaluator.cpp
    )

set (fm_material
    fluidcrosssection.cpp
    newtonianfluid.cpp
    fe2fluidmaterial.cpp
    nonlinearfluidmaterial.cpp
    )

set (fm_loads
    tractionpressurebc.cpp
    )

set (fm_status
    fluiddynamicmaterial.cpp
    twofluidmaterial.cpp
    binghamfluid2.cpp
    )

set (fm_interface
    leplic.cpp
    )

set (fm_levelset
    levelsetpcs.cpp
    fastmarchingmethod.cpp
    )

if (USE_PFEM)
    set (fm_pfem
        pfem/delaunaytriangulator.cpp
	pfem/edge2d.cpp
	pfem/delaunaytriangle.cpp
	pfem/pfem.cpp
	pfem/pfemelement.cpp
	pfem/pfemelement2d.cpp
	pfem/pfemparticle.cpp
	pfem/pfemnumberingschemes.cpp
	pfem/delaunaytriangle.cpp
	pfem/tr1_2d_pfem.cpp
	pfem/fluidstructureproblem.cpp
	pfem/interactionload.cpp
	pfem/interactionpfemparticle.cpp
	pfem/interactionboundarycondition.cpp
	)
endif ()

set (fm
    ${fm_emodel}
    ${fm_element}
    ${fm_material}
    ${fm_status}
    ${fm_loads}
    ${fm_interface}
    ${fm_levelset}
    ${fm_new}
    ${fm_pfem}
    )

file(GLOB_RECURSE project_headers *.h)
file(GLOB_RECURSE project_cpps *.cpp)
set(all_files ${project_headers} ${project_cpps})
source_group_by_dir(all_files)

add_library (fm
    ${LIB_TYPE}
    ${fm}
    ${project_headers}
    )
